RoadRunner Scenario 是一个交互式编辑器,使您能够设计用于模拟和测试自动驾驶系统的场景。您可以放置车辆,在场景中定义它们的路径和交互,然后在编辑器中模拟场景。您还可以以编程方式生成多种场景变体,将它们导出到 ASAM OpenSCENARIO,并在自动驾驶模拟器和播放器中模拟和可视化它们。
如果您在外部模拟器(例如 CARLA)中设计具有自主行为的参与者 ,您可以将该参与者行为分配给场景中的车辆。然后,您可以在 RoadRunner Scenario 和外部模拟器中共同模拟该参与者。您还可以对在 MATLAB ®和 Simulink 中设计的参与者进行协同仿真,并使用 MATLAB 和 Simulink 工具分析仿真结果。
场景与场景
RoadRunner Scenario 是一个附加产品,需要添加到您的 RoadRunner 许可证中。RoadRunner 基础产品使您能够设计由静态元素(例如道路、车道、地形和交通信号)组成的场景。此图显示了一个示例交叉点场景,其中包含您可以编辑的静态元素。
RoadRunner Scenario 使您能够设计由移动车辆等动态元素组成的动态场景。动态场景建立在静态场景之上:要创建动态场景,必须先创建静态场景。此图像显示了根据上一张图像的静态场景构建的示例动态场景。
在RoadRunner中,只有静态元素是可见和可编辑的。在 RoadRunner Scenario 中,场景是可见的,但只有动态元素是可编辑的。要在场景和场景编辑之间切换,请使用应用程序右上角的 Scene Editing ( RoadRunner ) 和 Scenario Editing ( RoadRunner Scenario ) 切换。
设计和模拟场景
在 RoadRunner Scenario 中,设计的场景由动作者组成,动作者是场景中运动的对象。车辆是一种类型的参与者,也是驾驶场景的关键组成部分。Library Browser 的 Assets/Vehicles 文件夹包含各种车辆资源,可以将它们拖到您的场景中。
通过选择一个演员并在场景中单击鼠标右键,您可以定义车辆要遵循的路径。默认情况下,路径与车道对齐,使您能够快速创建复杂的路径,例如转弯和变道。为了获得额外的灵活性,您可以通过修改切线航路点来更改路径的形状,在车道内横向移动路径,以及指定越野或违反交通法规的自由形式路径。
如果您没有指定路径,那么动作者将退回到他们的内置行为,对于添加到道路上的车辆来说,就是以恒定的速度在他们当前的车道上行驶。
要定义参与者之间的交互,您可以使用 2D Editor 窗格中可用的图形逻辑编辑器。
在此编辑器中定义的场景逻辑由一系列操作组成,这些操作具有触发这些操作的可选条件。动作和条件也可以并行发生,使您能够构建包含多个具有不同目标的参与者的复杂场景。例如,此示例逻辑场景显示车辆在与另一辆车达到一定距离时改变车道和改变速度。
为了测试场景,RoadRunner Scenario 提供了一个编辑器内模拟工具。从工具栏中,选择 Simulation Tool 以启用模拟控制。使用“Simulation”窗格中的控件,可以控制场景的节奏和步长。
在设计和模拟过程中,RoadRunner Scenario 会为您的场景提供验证反馈。这种反馈在设计时以视觉指示器的形式出现,并在仿真后在“Output” 窗格中报告。使用此验证反馈尽早修复验证错误,而不是等待在更耗时的导出过程中发现它们。
导出和导入场景
设计场景后,可以将其导出为受支持的格式,例如 ASAM OpenSCENARIO V1.x 和 V2.0。可以在自动驾驶模拟器和播放器中使用这些导出的场景。例如,此图显示了在 esmini 中导出到 ASAM OpenSCENARIO V1.0 的场景的可视化。
如果有以支持的格式定义的场景,例如 ASAM OpenSCENARIO V1.0,可以将这些场景文件导入RoadRunner Scenario,在编辑器中修改场景,然后重新导出它们。
可以以交互方式或编程方式导出和导入文件。使用 MATLAB 函数或基于 gRPC ®技术构建的语言中立 API ,您可以以编程方式导出或导入数百个您选择的语言的文件。
生成场景变化
通过采用单个场景并以编程方式改变它的某些方面,可以快速生成并导出数百甚至数千个场景,以在这些场景上测试自动驾驶汽车算法。例如,您可以改变场景中车辆之间的距离,或者改变车辆速度、颜色或类型。
要创建变量,请右键单击“Attributes ”窗格中的场景属性(右键的地方一定要是属性名),然后选择“创建变量”。例如,此图显示了正在创建的车辆速度变量。
这些值显示在“Variables”窗格中。
然后,可以使用 RoadRunner gRPC API 或相应的 MATLAB 函数修改这些变量,并以编程方式导出场景的多个变体。
还可以通过在场景中重新定位场景来改变场景。RoadRunner Scenario 中使用的锚定系统可以轻松地重新定位场景。通过在场景中四处拖动锚点,锚定到该点的所有对象都会随之移动。
在一个场景中,锚点可以是:
- 道路或交叉路口上的一个点。
- 指定动作者位置的点。
- 路径航路点。
可以将锚点分配给场景中的任何对象。例如,此图显示了相互锚定的车辆,所有车辆都直接或间接锚定在薰衣草色的路锚上。
- 沿车道或不同车道移动物体,例如车辆。
- 通过拖动单个锚点将整个场景移动到新的场景位置。
- 快速更改场景中所有车辆的行驶方向。
- 将车辆彼此对齐或与锚点对齐。
- 改变道路的形状,同时让车辆保持其相对位置。
如果多个场景有一个同名的路锚,您还可以将一个场景重新定位到一个全新的场景中。在每个场景中,场景都是相对于路锚定位的。
RoadRunner提供交互式和编程方式来在场景中重新定位场景。使用编程选项,可以从多个场景快速生成场景。
使用MATLAB和Simulink模拟 Actors
可以使用 MATLAB System object™ 和 Simulink 创作RoadRunner 动作者,关联 RoadRunner 场景中的动作者行为,并模拟场景。
这些是使用 MATLAB 和 Simulink 模拟 RoadRunner 场景的工作流程步骤:
- 编写 MATLAB 系统对象或 Simulink 模型来定义参与者行为。
- 在 RoadRunner 中关联动作者行为。
- (可选)发布参与者行为。
- 调整在 MATLAB 或 Simulink 中为 RoadRunner 仿真定义的参数。
- 使用 RoadRunner 用户界面模拟场景或从 MATLAB 以编程方式控制仿真。
与CARLA共同模拟动作者
可以在 RoadRunner Scenario 和外部模拟器(例如 CARLA )中共同模拟场景。使用外部模拟器,可以控制车辆参与者来测试自动驾驶算法。
也可以看看
相关例子
更多关于